package practice4;

import java.util.Scanner;

/**
 * 博主很棒啊，关于斜放的地方，我补充另外一种方法。
 * 在找正放的正方形的时候，斜的正方形也就找到了：
 * 1*1 格中 只有1个正放的正方形
 * 2*2 格中 有一个正放的正方形和一个斜放的正方形（斜1*1）这里的（斜1*1的意思是指斜正方形的边长是矩形1*1的对角线，下同）
 * 3*3 格中 有一个正放的正方形和一个斜放的正方形（斜1*2）
 * 4*4 格中 有一个正放的正方形和两个斜放的正方形（斜1*3）（斜2*2）
 * 5*5 格中 有一个正放的正方形和两个斜放的正方形（斜1*4）（斜2*3）
 * 6*6 格中 有一个正放的正方形和三个斜放的正方形（斜1*5）（斜2*4）（斜3*3）
 * 以此类推 n*n 格中 有一个正放的正方形和[n/2]个斜放的正方形([n/2]表示n/2向下取整)
 * （斜1*(n-1)）（斜2*(n-2)）（斜3*(n-3)）...（斜(n/2)*(n/2)）n为偶数
 * （斜1*(n-1)）（斜2*(n-2)）（斜3*(n-3)）...（斜[n/2]*([n/2]+1)）n为奇数
 */
public class P2568 {
    public static void main(String[] args) {
        int mod=(int)1e9+7;
        Scanner sc=new Scanner(System.in);
        long n=sc.nextInt();
        long ans=0;
        //平放
        for(int i=1;i<n;i++){
            //n为点数，n-1为大正方形边长，i为小正方形边长
            ans+=(n-i)*(n-i);
            ans%=mod;
        }
        //斜放
        for(int i=1;i<n;i++){
           for(int j=1;j<n;j++){
               if(i+j>=n){
                   continue;
               }
               long a=i+j;
               ans+=(n-a)*(n-a);
               ans%=mod;
           }
        }
        System.out.println(ans);
    }
}
